﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using SISCON.Bl;
using SISCON.Vo;
using SISCON.Common;
using SISCON.Model;

namespace SISCON.Service
{
    /// <summary>
    /// Summary description for ClassroomServices
    /// </summary>
    [WebService(Namespace = "http://SISCON.mx/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    [System.Web.Script.Services.ScriptService]
    public class ClassroomServices : System.Web.Services.WebService
    { 
        public ClassroomBL _ClassroomBL = new ClassroomBL();
        
        /// <summary>
        /// Manda a llamar al Bl GetClassroom
        /// </summary>
        /// <param name="sessionUUID">Sesion del sistema</param>
        /// <param name="classroomNumber">Numero del aula</param>
        /// <returns>Objeto de tipo ResultObject</returns>
        [WebMethod]
        [System.Xml.Serialization.XmlInclude(typeof(List<Classroom>))]
        public ResultObject GetClassroom(string sessionUUID, string classroomNumber)
        {
            try
            {
                return new ResultObject(_ClassroomBL.GetClassroom(sessionUUID, classroomNumber), null);
            }
            catch (Exception ex)
            {
                return new ResultObject(null, ex is SISCONException ? ex.Message : "No fue posible obtener el salon. Favor de intentar más tarde.");
            }
        }

        /// <summary>
        /// Manda a llamar al Bl GetClassroomCourses
        /// </summary>
        /// <param name="sessionUUID">Sesion del sistema</param>
        /// <param name="classroomId"></param>
        /// <returns>Objeto de tipo ResultObject</returns>
         [WebMethod]
         [System.Xml.Serialization.XmlInclude(typeof(List<Course>))]
         public ResultObject GetClassroomCourses(string sessionUUID, string classroomId)
         {
             try
             {
                 return new ResultObject(_ClassroomBL.GetClassroomCourses(sessionUUID, classroomId), null);
             }
             catch (Exception ex)
             {
                 return new ResultObject(null, ex is SISCONException ? ex.Message : "No fue posible obtener el salon. Favor de intentar más tarde.");
             }
         }

        /// <summary>
         /// Manda a llamar al Bl GetAllClassroom
        /// </summary>
        /// <param name="sessionUUID">Sesion del sistema</param>
        /// <returns></returns>
        [WebMethod]
        [System.Xml.Serialization.XmlInclude(typeof(List<Classroom>))]
        public ResultObject GetAllClassroom(string sessionUUID)
        {
            try
            {
                return new ResultObject(_ClassroomBL.GetAllClassrooms(sessionUUID), null);
            }
            catch (Exception ex)
            {
                return new ResultObject(null, ex is SISCONException ? ex.Message : "No fue posible obtener la lista de salones. Favor de intentar más tarde.");
            }
        }

        /// <summary>
        /// Manda a llamar al Bl GetClassroom
        /// </summary>
        /// <param name="sessionUUID">Sesion</param>
        /// <param name="teacherId"></param>
        /// <returns></returns>
        [WebMethod]
        public ResultObject DeleteClassroom(string sessionUUID, string teacherId)
        {
            try
            {
                _ClassroomBL.DeleteClassroom(sessionUUID, teacherId);
                return new ResultObject("Ok",null);
            }
            catch (Exception ex)
            {
                return new ResultObject(null, ex is SISCONException ? ex.Message : "No fue posible obtener eliminar el salon. Favor de intentar más tarde.");
            }
        }

        /// <summary>
        /// Manda a llamar al Bl SaveClassroom
        /// </summary>
        /// <param name="sessionUUID">Sesion del sistema</param>
        /// <param name="classroomId">Id interno del aula</param>
        /// <param name="classroomLocation">Ubicacion del aula</param>
        /// <param name="classroomNumber">Numero del aula</param>
        /// <returns>Objeto de tipo ResultObject</returns>
        [WebMethod]
        public ResultObject SaveClassroom(string sessionUUID, string classroomId, string classroomLocation, string classroomNumber, string userId)
        {
            try
            {
                _ClassroomBL.SaveClassroom(sessionUUID, classroomId, classroomLocation, classroomNumber, userId);
                return new ResultObject("Ok", null);
            }
            catch (Exception ex)
            {
                return new ResultObject(null, ex is SISCONException ? ex.Message : "No fue posible guardar los datos del salon. Favor de intentar más tarde.");
            }
        }
    }
}

